﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using GSLMS.Entity;
namespace GSLMS.Services.Interface
{
	/// <summary>
	/// 接口说明:TB_APP_AUDIT接口
	/// </summary>
	[ServiceContract(Name = "IAPP_AUDIT", Namespace = "http://www.gslms.com/")]
	public interface IAPP_AUDIT : IBase<TB_APP_AUDIT>
	{
        /// <summary>
        /// 首席风控官审批
        /// </summary>
        /// <returns></returns>
         [OperationContract]
        int DirectorAudit(GSLMS.Entity.TB_APP_DIRECTORAUDIT model);

        /// <summary>
        /// 判断是否允许首席风控官撤回审批
        /// </summary>
        /// <param name="proID">立项申请记录ID</param>
        /// <returns></returns>
        [OperationContract]
        bool IsDirectorAuditRetract(long proID,long auditID);

        /// <summary>
        /// 提取首席风控官审批中要显示的项目经理和总经理审批的信息
        /// </summary>
        /// <param name="proID"></param>
        /// <returns></returns>
        [OperationContract]
        List<GSLMS.Entity.TB_APP_AUDIT> GetDirectorAuditInfo(long proID);

        /// <summary>
        /// 提取审议审批中要显示的项目经理和总经理审批的信息
        /// </summary>
        /// <param name="proID"></param>
        /// <returns></returns>
         [OperationContract]
        List<GSLMS.Entity.TB_APP_AUDIT> GetRiskAuditConAduAuditInfo(long proID);

        /// <summary>
        /// 提取部门经理待审批信息
        /// </summary>
        /// <param name="actionBy">提取人</param>
        /// <returns></returns>
        [OperationContract]
        List<GSLMS.Entity.TB_APP_SHOULDDOINFO> GetBMShouldDoList(string actionBy);

        /// <summary>
        /// 提取项目总经理待审批信息
        /// </summary>
        /// <param name="actionBy">提取人</param>
        /// <returns></returns>
        [OperationContract]
        List<GSLMS.Entity.TB_APP_SHOULDDOINFO> GetGMShouldDoList(string actionBy);

        /// <summary>
        /// 立项申请项目经理审批
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [OperationContract]
        bool ProInfoBMAudit(GSLMS.Entity.TB_APP_AUDIT model);

        /// <summary>
        /// 转介申请审批
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [OperationContract]
        bool RefInfoAudit(GSLMS.Entity.TB_APP_REFREGINFO model);

         /// <summary>
        /// 新增转介分配信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [OperationContract]
        bool RefInfoAss(GSLMS.Entity.TB_APP_REFREGINFO model);

        /// <summary>
        /// 提取首席风控官待审批信息
        /// </summary>
        /// <param name="actionBy">提取人</param>
        /// <returns></returns>
        [OperationContract]
        List<GSLMS.Entity.TB_APP_SHOULDDOINFO> GetRiskAuditShouldDoList(string actionBy);

        /// <summary>
        /// 提取首席风控官审批信息
        /// </summary>
        /// <param name="id">记录ID</param>
        /// <returns></returns>
       [OperationContract]
       GSLMS.Entity.TB_APP_DIRECTORAUDIT GetDirectorAuditByID(long id);

        /// <summary>
        /// 分页提取首席风控官审批数据
        /// </summary>
        [OperationContract]
        List<GSLMS.Entity.TB_APP_DIRECTORAUDIT> GetDirectorAuditList(GSLMS.Entity.TB_APP_DIRECTORAUDIT searchParam);


       
        /// <summary>
        /// 提取总裁、董事长要显示的审批信息
        /// </summary>
        /// <param name="proID"></param>
        /// <returns></returns>
        [OperationContract]
        GSLMS.Entity.HighAuditInfo GetHighAuditInfo(long proID);

        /// <summary>
        /// 提取总裁、董事长待审批信息
        /// </summary>
        /// <param name="actionBy">提取人</param>
        /// <returns></returns>
        [OperationContract]
        List<GSLMS.Entity.TB_APP_SHOULDDOINFO> GetHighAuditShouldDoList(string actionBy);

        /// <summary>
        /// 总裁、董事长审批(包括同意，拒绝，退回，撤回)
        /// </summary>
        /// <returns>返回1成功，-1不允许审批，0失败</returns>
        [OperationContract]
        int ToHighAudit(GSLMS.Entity.TB_APP_DIRECTORAUDIT model);

        /// <summary>
        /// 分页提取总裁、董事长审批数据
        /// </summary>
        [OperationContract]
        List<GSLMS.Entity.TB_APP_DIRECTORAUDIT> GetHighAuditList(GSLMS.Entity.TB_APP_DIRECTORAUDIT searchParam);

        /// <summary>
        /// 判断是否允许总裁、董事长撤回审批
        /// </summary>
        /// <param name="proID">立项申请记录ID</param>
        /// <returns></returns>
        [OperationContract]
        bool IsHighAuditRetract(long proID, long auditID);

	}
}
